<?php
/**
 * WP Compatibility - functions that came in after 2.7
 *
 * @package WP_Framework
 */

/**
 * Retrieve the classes for the body element as an array.
 *
 * @since 2.8.0
 *
 * @param string|array $class One or more classes to add to the class list.
 * @return array Array of classes.
 */
if ( ! function_exists( 'get_body_class' ) ):
	function get_body_class( $class = '' ) {
		global $wp_query, $current_user;
		
		$classes = array();
		
		if ( 'rtl' == get_bloginfo('text_direction') )
			$classes[] = 'rtl';
		
		if ( is_front_page() )
			$classes[] = 'home';
		if ( is_home() )
			$classes[] = 'blog';
		if ( is_archive() )
			$classes[] = 'archive';
		if ( is_date() )
			$classes[] = 'date';
		if ( is_search() )
			$classes[] = 'search';
		if ( is_paged() )
			$classes[] = 'paged';
		if ( is_attachment() )
			$classes[] = 'attachment';
		if ( is_404() )
			$classes[] = 'error404';
		
		if ( is_single() ) {
			the_post();
			
			$postID = $wp_query->post->ID;
			$classes[] = 'single postid-' . $postID;
			
			if ( is_attachment() ) {
				$mime_type = get_post_mime_type();
				$mime_prefix = array( 'application/', 'image/', 'text/', 'audio/', 'video/', 'music/' );
				$classes[] = 'attachmentid-' . $postID . ' attachment-' . str_replace( $mime_prefix, "", "$mime_type" );
			}
			
			rewind_posts();
		} elseif ( is_archive() ) {
			if ( is_author() ) {
				$author = $wp_query->get_queried_object();
				$classes[] = 'author';
				$classes[] = 'author-' . $author->user_nicename;
			} elseif ( is_category() ) {
				$cat = $wp_query->get_queried_object();
				$classes[] = 'category';
				$classes[] = 'category-' . $cat->slug;
			} elseif ( is_tag() ) {
				$tags = $wp_query->get_queried_object();
				$classes[] = 'tag';
				$classes[] = 'tag-' . $tags->slug;
			}
		} elseif ( is_page() ) {
			the_post();
			
			$pageID = $wp_query->post->ID;
			$page_children = wp_list_pages("child_of=$pageID&echo=0");
			
			if ( $page_children )
				$classes[] = 'page-parent';
			
			if ( $wp_query->post->post_parent )
				$classes[] = 'page-child parent-pageid-' . $wp_query->post->post_parent;
			
			if ( is_page_template() )
				$classes[] = 'page-template page-template-' . str_replace( '.php', '-php', get_post_meta( $pageID, '_wp_page_template', true ) );
			
			rewind_posts();
		} elseif ( is_search() ) {
			the_post();
			
			if ( have_posts() )
				$classes[] = 'search-results';
			else
				$classes[] = 'search-no-results';
			
			rewind_posts();
		}
		
		if ( is_user_logged_in() )
			$classes[] = 'logged-in';
		
		$page = $wp_query->get('page');
		
		if ( !$page || $page < 2)
			$page = $wp_query->get('paged');
		
		if ( $page && $page > 1 ) {
			$classes[] = 'paged-' . $page;
			
			if ( is_single() )
				$classes[] = 'single-paged-' . $page;
			elseif ( is_page() )
				$classes[] = 'page-paged-' . $page;
			elseif ( is_category() )
				$classes[] = 'category-paged-' . $page;
			elseif ( is_tag() )
				$classes[] = 'tag-paged-' . $page;
			elseif ( is_date() )
				$classes[] = 'date-paged-' . $page;
			elseif ( is_author() )
				$classes[] = 'author-paged-' . $page;
			elseif ( is_search() )
				$classes[] = 'search-paged-' . $page;
		}
		
		if ( !empty($class) ) {
			if ( !is_array( $class ) )
				$class = preg_split('#\s+#', $class);
			$classes = array_merge($classes, $class);
		}
		
		return apply_filters('body_class', $classes, $class);
	}
endif;
?>